package com.demo.homework;

import com.demo.upload.StreamUtils;
import sun.net.www.content.image.png;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;

/**
 * @author gy
 * @date 2022/5/4
 */
public class Homework03Client {
    public static void main(String[] args) throws Exception{
        // 1、接收用户输入，指定下载文件名
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入下载的文件名");
        String downLoadFileName = scanner.next();

        // 2、客户端连接服务端 准备发送
        Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
        // 3、获取和socket关联的输出流
        OutputStream outputStream = socket.getOutputStream();
        outputStream.write(downLoadFileName.getBytes());
        // 设置写入截止符
        socket.shutdownOutput();

        // 4、读取服务端返回的文件（字节数据）
        InputStream inputStream = socket.getInputStream();

        // 5、通过 StreamUtils 工具类 将 输入流转换为字节数据
        byte[] bytes = StreamUtils.streamToByteArray(inputStream);

        // 6、将字节数据保存到磁盘中去
        // 注意：你输入的文件名 决定 了 文件的内容，虽然文件的名字是由你定义的
        //  企鹅 -> 文件内容为 qie.png  文件名称为   企鹅.png
        //  其他 -> 文件内容为 无名.png  文件名称为   莫兰特.png
        String targetFileName = "20220503-network-study/src/main/resources/"+downLoadFileName+".png ";
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(targetFileName));
        bos.write(bytes);

        // 7、关闭所有的资源
        bos.close();
        inputStream.close();
        socket.close();
        outputStream.close();

        System.out.println("客户端下载完毕，正确退出");

    }
}
